// ================================================
// VERIFY THAT SH CHANGES ONLY TWO BYTES
//
// Expected word at 0x1000:
//   0x1234FFFF
// ================================================

start:

lui  x1, 0x1             // x1 = address 0x1000

addi x2, x0, -1          // x2 = 0xFFFFFFFF
sw   x2, 0(x1)           // Memory word = 0xFFFFFFFF

lui  x3, 0x1             // x3 = 0x00001000
addi x3, x3, 0x234       // x3 = 0x00001234

sh   x3, 2(x1)           // Store 0x1234 in upper halfword
lw   x4, 0(x1)           // x4 should be 0x1234FFFF

cout << "SH memory test = " << _to_hex x4 << endl;
